Attaching package: 㤼㸱lubridate㤼㸲

The following object is masked from 㤼㸱package:base㤼㸲:

    date

pros_agg = pros_df%>%
  mutate(yr = year(origination_date),mn = month(origination_date))%>%
  #group_by(yr,mn, prosper_rating)%>%
  group_by(origination_date,prosper_rating,yr,mn)%>%
  summarize(avg_amt_borrowed = mean(amount_borrowed),
            w_avg_rate = weighted.mean(borrower_rate,amount_borrowed))%>%
  mutate(org_dt = ymd(paste(yr,mn,'01',sep = '-')))
  
pros_agg2 = pros_df%>%
  mutate(yr = year(origination_date),mn = month(origination_date))%>%
  group_by(yr,mn, prosper_rating)%>%
  #group_by(origination_date,prosper_rating,yr,mn)%>%
  summarize(avg_amt_borrowed = mean(amount_borrowed),
            w_avg_rate = weighted.mean(borrower_rate,amount_borrowed))%>%
  mutate(org_dt = ymd(paste(yr,mn,'01',sep = '-')))

A little about me before we begin:

Modeler at Bank of America

Avid Star Wars Fan

Amatuer user and ardent supporter of version control in data science

R user for the last 9 years.

Used R for modeling and development at American Credit Acceptance before coming to Bank of America.

Bank of America work:

What is this presenation?

I enjoy the data visualization side of data science

ggplot was always go too for my data science needs

  • simple intuitive syntax to write and read
  • wide range of useful geoms to solve common modeling problems
  • integrates well with the rest of tidyverse

  • (Big step forward from lattice and base graphics)

ggplot is an adoption of the precepts laid out in the Grammar of Graphics

ggplot doesn’t lend itself to interactivity

  • several efforts have introduced interactivity
    • ggvis
    • rggobi
    • iPlots
    • htmlwidgets
    • r2d3

htmlwidets and r2d3 are an adaptation of D3/javascript technology

D3 is a javascript package that is very important in data visualization

  • Written in a language that integrates with web development
  • Uses data to manipulate the web document through various objects (SVG)
  • Released in 2011

Useful examples of power and interactivity:

Sunburst Example

Density over time

Decision Tree Example

D3 Pros and Cons

Pros - Very flexible and portable - Interactivity part of the dna - Looks very professional and polished

Cons - Very steep learning curve - API requires decent understanding of how javascript - Centered on webdevelopment instead of data science - ?Falling out of favor?

What is the answer?

Plot.ly is a solution with a simpler API and out of the box interactivity

Essentially plot.ly is API wrapper for several D3

How does the plotly package work

Key to understading package is understanding how it transforms the data

Below is a useful diagram showing how the final presentation is done.

Plotly uses two key components:

  1. Data/Trace:
  1. Layout

ggplotly() to the rescue

If you have plots in ggplot, you can start using plotly with just a simple function call on most ggplot objects.

Let’s make a ggplot from Propser data.

amt_fin_p = pros_agg%>%
  ggplot(aes(origination_date,avg_amt_borrowed))+
  geom_line(aes(color = prosper_rating))

amt_fin_p

Simple ggplotly command adds the tooltip, zooming,

ggplotly(amt_fin_p)

Now the plotly syntax:

pros_agg%>%
  plot_ly(x = ~origination_date, y = ~avg_amt_borrowed, color = ~prosper_rating, type = 'scatter', mode = 'lines')

#  add_lines(color = ~prosper_rating)
plot(cars)

Add a new chunk by clicking the Insert Chunk button on the toolbar or by pressing Ctrl+Alt+I.

When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the Preview button or press Ctrl+Shift+K to preview the HTML file).

The preview shows you a rendered HTML copy of the contents of the editor. Consequently, unlike Knit, Preview does not run any R code chunks. Instead, the output of the chunk when it was last run in the editor is displayed.

LS0tDQp0aXRsZTogIlBsb3QubHk6IEhvdyBJIGxlYXJuZWQgYSAodmVyeSBsaXR0bGUpIGphdmEgc2NyaXB0IGFuZCBsb3ZlIGludGVyYWN0aXZlIHBsb3RzOiINCmF1dGhvcjogIkRhdmlkIEdyaW5kZXIiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7ciwgZWNobz0gRkFMU0V9DQojSW1wb3J0IGxpYnJhcmllcw0KDQpsaWJyYXJ5KHBsb3RseSkNCmxpYnJhcnkobGlzdHZpZXdlcikNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpgYGANCg0KYGBge3IsIGVjaG8gPSBGQUxTRX0NCiNJbXBvcnRpbmcgZGF0YQ0KcHJvc19kZiA9IHJlYWRfY3N2KCJwcm9zcGVyMjAxOS5jc3YiKQ0KDQpgYGANCg0KYGBge3J9DQoNCnByb3NfYWdnID0gcHJvc19kZiU+JQ0KICBtdXRhdGUoeXIgPSB5ZWFyKG9yaWdpbmF0aW9uX2RhdGUpLG1uID0gbW9udGgob3JpZ2luYXRpb25fZGF0ZSkpJT4lDQogICNncm91cF9ieSh5cixtbiwgcHJvc3Blcl9yYXRpbmcpJT4lDQogIGdyb3VwX2J5KG9yaWdpbmF0aW9uX2RhdGUscHJvc3Blcl9yYXRpbmcseXIsbW4pJT4lDQogIHN1bW1hcml6ZShhdmdfYW10X2JvcnJvd2VkID0gbWVhbihhbW91bnRfYm9ycm93ZWQpLA0KICAgICAgICAgICAgd19hdmdfcmF0ZSA9IHdlaWdodGVkLm1lYW4oYm9ycm93ZXJfcmF0ZSxhbW91bnRfYm9ycm93ZWQpKSU+JQ0KICBtdXRhdGUob3JnX2R0ID0geW1kKHBhc3RlKHlyLG1uLCcwMScsc2VwID0gJy0nKSkpDQogIA0KcHJvc19hZ2cyID0gcHJvc19kZiU+JQ0KICBtdXRhdGUoeXIgPSB5ZWFyKG9yaWdpbmF0aW9uX2RhdGUpLG1uID0gbW9udGgob3JpZ2luYXRpb25fZGF0ZSkpJT4lDQogIGdyb3VwX2J5KHlyLG1uLCBwcm9zcGVyX3JhdGluZyklPiUNCiAgI2dyb3VwX2J5KG9yaWdpbmF0aW9uX2RhdGUscHJvc3Blcl9yYXRpbmcseXIsbW4pJT4lDQogIHN1bW1hcml6ZShhdmdfYW10X2JvcnJvd2VkID0gbWVhbihhbW91bnRfYm9ycm93ZWQpLA0KICAgICAgICAgICAgd19hdmdfcmF0ZSA9IHdlaWdodGVkLm1lYW4oYm9ycm93ZXJfcmF0ZSxhbW91bnRfYm9ycm93ZWQpKSU+JQ0KICBtdXRhdGUob3JnX2R0ID0geW1kKHBhc3RlKHlyLG1uLCcwMScsc2VwID0gJy0nKSkpDQoNCg0KYGBgDQoNCg0KDQojIEEgbGl0dGxlIGFib3V0IG1lIGJlZm9yZSB3ZSBiZWdpbjoNCg0KDQpNb2RlbGVyIGF0IEJhbmsgb2YgQW1lcmljYQ0KDQpBdmlkIFN0YXIgV2FycyBGYW4NCg0KIVtdKHJldHVybl9vZl9qZWRpLmpwZykNCg0KQW1hdHVlciB1c2VyIGFuZCBhcmRlbnQgc3VwcG9ydGVyIG9mIHZlcnNpb24gY29udHJvbCBpbiBkYXRhIHNjaWVuY2UNCg0KIVtdKGdpdC5wbmcpDQoNClIgdXNlciBmb3IgdGhlIGxhc3QgOSB5ZWFycy4NCg0KVXNlZCBSIGZvciBtb2RlbGluZyBhbmQgZGV2ZWxvcG1lbnQgYXQgQW1lcmljYW4gQ3JlZGl0IEFjY2VwdGFuY2UgYmVmb3JlIGNvbWluZyB0byBCYW5rIG9mIEFtZXJpY2EuDQoNCiFbXShBQ0EucG5nKQ0KDQotIEludHJvZHVjZWQgYW5kIGNoYW1waW9uZWQgU2hpbnkgZm9yIHJhcGlkIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50DQotIERldmVsb3BlZCB2YXJpb3VzIG1vZGVscyBhbmQgcHJvY2VzcyBpbXByb3ZlbWVudHMgdXNpbmcgUiB0b29sIGtpdA0KDQoqKkJhbmsgb2YgQW1lcmljYSB3b3JrOioqDQoNCiFbXShodHRwczovL3d3dy51bmRlcmNvbnNpZGVyYXRpb24uY29tL2JyYW5kbmV3L2FyY2hpdmVzL2Jhbmtfb2ZfYW1lcmljYV9sb2dvX2FuaW1hdGlvbl9uZXdfYS5naWYpDQoNCi0gTW9kZWxpbmcgTGVhZCBmb3IgQ29uc3VtZXIgQmVoYXZpb3IgTW9kZWxpbmc6DQotIFdvcmtlZCBvbiBSaXNrIE1vZGVscyBmb3IgYSB5ZWFyDQotIEN1cnJlbnRseSB3b3JraW5nIG9uIElubm92YXRpb24gdGVhbSAoQmVzdCBqb2IgSSB0aGluayBJIHdpbGwgZXZlciBoYXZlKToNCiAgLSBOZXcgbW9kZWxpbmcgaWRlYXMNCiAgLSBOZXcgYXJlYXMgb2YgdGhlIGJ1c2luZXNzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIG1vZGVsaW5nIGtub3dsZWRnZQ0KICAtIEFwcGxpY2F0aW9uIG9mIGRlZXAgbGVhcm5pbmcNCg0KIyAqKldoYXQgaXMgdGhpcyBwcmVzZW5hdGlvbj8qKg0KDQojICoqSSBlbmpveSB0aGUgZGF0YSB2aXN1YWxpemF0aW9uIHNpZGUgb2YgZGF0YSBzY2llbmNlKioNCg0KIyMgKipnZ3Bsb3Qgd2FzIGFsd2F5cyBnbyB0b28gZm9yIG15IGRhdGEgc2NpZW5jZSBuZWVkcyoqDQoNCi0gc2ltcGxlIGludHVpdGl2ZSBzeW50YXggdG8gd3JpdGUgYW5kIHJlYWQNCi0gd2lkZSByYW5nZSBvZiB1c2VmdWwgZ2VvbXMgdG8gc29sdmUgY29tbW9uIG1vZGVsaW5nIHByb2JsZW1zDQotIGludGVncmF0ZXMgd2VsbCB3aXRoIHRoZSByZXN0IG9mIHRpZHl2ZXJzZQ0KDQotIChCaWcgc3RlcCBmb3J3YXJkIGZyb20gbGF0dGljZSBhbmQgYmFzZSBncmFwaGljcykNCg0KDQoNCiMjIyAqKmdncGxvdCBpcyBhbiBhZG9wdGlvbiBvZiB0aGUgcHJlY2VwdHMgbGFpZCBvdXQgaW4gdGhlIEdyYW1tYXIgb2YgR3JhcGhpY3MqKiANCg0KIVtdKEdHX2NvbmNlcHRzLnBuZykNCg0KIyMgZ2dwbG90IGRvZXNuJ3QgbGVuZCBpdHNlbGYgdG8gaW50ZXJhY3Rpdml0eQ0KDQotIHNldmVyYWwgZWZmb3J0cyBoYXZlIGludHJvZHVjZWQgaW50ZXJhY3Rpdml0eSANCiAgLSBnZ3Zpcw0KICAtIHJnZ29iaQ0KICAtIGlQbG90cw0KICAtIGh0bWx3aWRnZXRzDQogIC0gcjJkMw0KDQojIGh0bWx3aWRldHMgYW5kIHIyZDMgYXJlIGFuIGFkYXB0YXRpb24gb2YgRDMvamF2YXNjcmlwdCB0ZWNobm9sb2d5DQoNCiMjIEQzIGlzIGEgamF2YXNjcmlwdCBwYWNrYWdlIHRoYXQgaXMgdmVyeSBpbXBvcnRhbnQgaW4gZGF0YSB2aXN1YWxpemF0aW9uDQoNCi0gV3JpdHRlbiBpbiBhIGxhbmd1YWdlIHRoYXQgaW50ZWdyYXRlcyB3aXRoIHdlYiBkZXZlbG9wbWVudA0KLSBVc2VzIGRhdGEgdG8gbWFuaXB1bGF0ZSB0aGUgd2ViIGRvY3VtZW50IHRocm91Z2ggdmFyaW91cyBvYmplY3RzIChTVkcpDQotIFJlbGVhc2VkIGluIDIwMTENCg0KIyMjIFVzZWZ1bCBleGFtcGxlcyBvZiBwb3dlciBhbmQgaW50ZXJhY3Rpdml0eToNCg0KIyBTdW5idXJzdCBFeGFtcGxlDQoNCiFbXShodHRwczovL2kuc3RhY2suaW1ndXIuY29tL0g2TzJLLmdpZikNCg0KIyBEZW5zaXR5IG92ZXIgdGltZQ0KDQohW10oaHR0cHM6Ly9tZWRpYS5naXBoeS5jb20vbWVkaWEvTlRqaXVza0lNRTZhd0tuMW5EL2dpcGh5LmdpZikNCg0KW0RlY2lzaW9uIFRyZWUgRXhhbXBsZV0oaHR0cDovL2JsLm9ja3Mub3JnL2ZyYWN0YWx5dGljcy9yYXcvNDk1YjYzY2Y2NzFiNGM0ODdiYzQwODAxMzY2Mzg0ZTAvKQ0KDQoNCiMgKipEMyBQcm9zIGFuZCBDb25zKioNCg0KKlByb3MqDQotIFZlcnkgZmxleGlibGUgYW5kIHBvcnRhYmxlDQotIEludGVyYWN0aXZpdHkgcGFydCBvZiB0aGUgZG5hDQotIExvb2tzIHZlcnkgcHJvZmVzc2lvbmFsIGFuZCBwb2xpc2hlZA0KDQoqQ29ucyoNCi0gVmVyeSBzdGVlcCBsZWFybmluZyBjdXJ2ZQ0KICAtIEFQSSByZXF1aXJlcyBkZWNlbnQgdW5kZXJzdGFuZGluZyBvZiBob3cgamF2YXNjcmlwdA0KLSBDZW50ZXJlZCBvbiB3ZWJkZXZlbG9wbWVudCBpbnN0ZWFkIG9mIGRhdGEgc2NpZW5jZQ0KLSA/RmFsbGluZyBvdXQgb2YgZmF2b3I/DQoNCiMjIFdoYXQgaXMgdGhlIGFuc3dlcj8NCg0KIyAqKlBsb3QubHkgaXMgYSBzb2x1dGlvbiB3aXRoIGEgc2ltcGxlciBBUEkgYW5kIG91dCBvZiB0aGUgYm94IGludGVyYWN0aXZpdHkqKg0KDQpFc3NlbnRpYWxseSBwbG90Lmx5IGlzIEFQSSB3cmFwcGVyIGZvciBzZXZlcmFsIEQzDQoNCg0KIyAqKkhvdyBkb2VzIHRoZSBwbG90bHkgcGFja2FnZSB3b3JrKioNCg0KS2V5IHRvIHVuZGVyc3RhZGluZyBwYWNrYWdlIGlzIHVuZGVyc3RhbmRpbmcgaG93IGl0IHRyYW5zZm9ybXMgdGhlIGRhdGENCg0KLSBEYXRhIGVudGVycyBpbiBSIGZvcm1hdHMNCi0gVHJhbnNmb3JtZWQgdG8gbGlzdCBmb3JtYXQgDQotIFRyYW5mb3JtZWQgdG8gSlNPTiBmb3JtYXQNCg0KQmVsb3cgaXMgYSB1c2VmdWwgZGlhZ3JhbSBzaG93aW5nIGhvdyB0aGUgZmluYWwgcHJlc2VudGF0aW9uIGlzIGRvbmUuDQoNCiFbXShwbG90bHlfZGF0YV90cmFuc2Zvcm0uc3ZnKQ0KDQoqKlBsb3RseSB1c2VzIHR3byBrZXkgY29tcG9uZW50czoqKg0KDQoxLiBEYXRhL1RyYWNlOg0KICAtIENvbm5lY3Rpb24gYmV0d2VlbiBkYXRhIGFuZCB2aXN1YWxzDQogIC0gVHJhY2VzIGhhdmUgdHlwZXMgKHNjYXR0ZXIgcGxvdCwgaGlzdG9ncmFtcywgc3VuYnVyc3QsIGV0Yy4pDQogIC0gVHJhY2UgdHlwZXMgaGF2ZSBzcGVjaWZpYyBhdHR0cmlidXRlcyB0aGF0IGNhbiBiZSBkZWZpbmVkLg0KMi4gTGF5b3V0DQoNCg0KIyAqKmdncGxvdGx5KCkgdG8gdGhlIHJlc2N1ZSoqDQoNCklmIHlvdSBoYXZlIHBsb3RzIGluIGdncGxvdCwgeW91IGNhbiBzdGFydCB1c2luZyBwbG90bHkgd2l0aCBqdXN0IGEgc2ltcGxlIGZ1bmN0aW9uIGNhbGwgb24gbW9zdCBnZ3Bsb3Qgb2JqZWN0cy4NCg0KDQpMZXQncyBtYWtlIGEgZ2dwbG90IGZyb20gUHJvcHNlciBkYXRhLiAgDQpgYGB7cn0NCmFtdF9maW5fcCA9IHByb3NfYWdnJT4lDQogIGdncGxvdChhZXMob3JpZ2luYXRpb25fZGF0ZSxhdmdfYW10X2JvcnJvd2VkKSkrDQogIGdlb21fbGluZShhZXMoY29sb3IgPSBwcm9zcGVyX3JhdGluZykpDQoNCmFtdF9maW5fcA0KYGBgDQoNClNpbXBsZSBnZ3Bsb3RseSBjb21tYW5kIGFkZHMgdGhlIHRvb2x0aXAsIHpvb21pbmcsIA0KDQpgYGB7cn0NCmdncGxvdGx5KGFtdF9maW5fcCkNCmBgYA0KDQpOb3cgdGhlIHBsb3RseSBzeW50YXg6DQoNCmBgYHtyfQ0KcHJvc19hZ2clPiUNCiAgcGxvdF9seSh4ID0gfm9yaWdpbmF0aW9uX2RhdGUsIHkgPSB+YXZnX2FtdF9ib3Jyb3dlZCwgY29sb3IgPSB+cHJvc3Blcl9yYXRpbmcsIHR5cGUgPSAnc2NhdHRlcicsIG1vZGUgPSAnbGluZXMnKQ0KIyAgYWRkX2xpbmVzKGNvbG9yID0gfnByb3NwZXJfcmF0aW5nKQ0KYGBgDQoNCg0KDQoNCmBgYHtyfQ0KcGxvdChjYXJzKQ0KYGBgDQoNCkFkZCBhIG5ldyBjaHVuayBieSBjbGlja2luZyB0aGUgKkluc2VydCBDaHVuayogYnV0dG9uIG9uIHRoZSB0b29sYmFyIG9yIGJ5IHByZXNzaW5nICpDdHJsK0FsdCtJKi4NCmBgYHtyfQ0KDQpgYGANCg0KV2hlbiB5b3Ugc2F2ZSB0aGUgbm90ZWJvb2ssIGFuIEhUTUwgZmlsZSBjb250YWluaW5nIHRoZSBjb2RlIGFuZCBvdXRwdXQgd2lsbCBiZSBzYXZlZCBhbG9uZ3NpZGUgaXQgKGNsaWNrIHRoZSAqUHJldmlldyogYnV0dG9uIG9yIHByZXNzICpDdHJsK1NoaWZ0K0sqIHRvIHByZXZpZXcgdGhlIEhUTUwgZmlsZSkuDQoNClRoZSBwcmV2aWV3IHNob3dzIHlvdSBhIHJlbmRlcmVkIEhUTUwgY29weSBvZiB0aGUgY29udGVudHMgb2YgdGhlIGVkaXRvci4gQ29uc2VxdWVudGx5LCB1bmxpa2UgKktuaXQqLCAqUHJldmlldyogZG9lcyBub3QgcnVuIGFueSBSIGNvZGUgY2h1bmtzLiBJbnN0ZWFkLCB0aGUgb3V0cHV0IG9mIHRoZSBjaHVuayB3aGVuIGl0IHdhcyBsYXN0IHJ1biBpbiB0aGUgZWRpdG9yIGlzIGRpc3BsYXllZC4NCg==